/**
 * express三大概念:中间件、路由、异常处理
 */
const express = require('express')
const router = require('./router/index.js')

// const { reName } = require('./fs/index.js')
// reName(path.resolve('./周杰伦/Jay'), '.lrc', '.txt')

// 导入中间件bodyParser,对post请求的请求体进行解析
const bodyParser = require('body-parser')

// 创建 express 应用
const app = express()

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())

app.all("*", (req,res,next) => {
  //设置允许跨域的域名，*代表允许任意域名跨域
  res.header("Access-Control-Allow-Origin", "*");
	res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
	res.header("Access-Control-Allow-Headers", "X-Requested-With");
	res.header('Access-Control-Allow-Headers', ['mytoken','Content-Type']);
  next()
})

app.use(router)

/**
 * 中间件
 * 中间件是一个函数,在请求和响应周期中被顺序调用
 * 绝大部分的中间件需要在响应结束前被调用
 */
// function myLogger(req, res, next){
// 	console.log('myLogger');
// 	next()
// }
// app.use(myLogger)

/**
 * 路由
 * 监听 / 路径的 get 请求
 */
// app.get('/', function(req, res) {
// 	// throw new Error('get请求手动抛出的异常')
//   res.send('hello node')
// })

/**
 * 异常处理
 * 需要后置,因为抛出异常以后会继续通过next往下找还有没有errorHandler
 */
// function errorHandler(err, req, res, next){
// 	res.status(500).json({
// 		error: -1,
// 		msg: err.toString()
// 	})
// }
// app.use(errorHandler)

// 使 express 监听 3030 端口号发起的 http 请求
const server = app.listen(3030, function() {
  const { address, port } = server.address()
  console.log('http服务启动成功: http://%s:%s', address, port)
})
